/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package control;

import javax.servlet.*;
import javax.servlet.http.*;
import java.io.*;
import componentes.BeanConector;
import componentes.BeanGestionEmpresa;
import componentes.BeanUsuario;
import componentes.BeanEmpresa;
import componentes.BeanGestionUsuario;


/**
 *
 * @author Ximena del Pilar
 */


    public class ServletAdministrador
            extends HttpServlet {

        private static final String CONTENT_TYPE = "text/html";
        static final long serialVersionUID = 0;
        BeanConector bc;
        BeanGestionUsuario gestionUsuario;
        BeanGestionEmpresa gestionEmpresa;
        String login = null;
        String rut_empresa=null;

        public void init() throws ServletException {
            this.conectarBD();
            this.gestionUsuario = new BeanGestionUsuario(this.bc);
            this.gestionEmpresa = new BeanGestionEmpresa(this.bc);
        }
        //Process the HTTP Post request

        public void doPost(HttpServletRequest request, HttpServletResponse response) throws
                ServletException, IOException {
            response.setContentType(CONTENT_TYPE);
            if (request.getParameter("Gestionar Empresa") != null) {
                BeanEmpresa[] ArregloEmpresas;
                ArregloEmpresas = this.gestionEmpresa.ListarEmpresas();
                request.setAttribute("ArregloEmpresas", ArregloEmpresas);
                gotoPage("ListarEmpresas.jsp", request, response);
                } else if (request.getParameter("Borrar Empresa") != null) {
                rut_empresa = request.getParameter("ArregloEmpresas");
                if (this.gestionEmpresa.BorrarEmpresas(rut_empresa)) {
                    BeanEmpresa[] ArregloEmpresas;
                    ArregloEmpresas = this.gestionEmpresa.ListarEmpresas();
                    request.setAttribute("ArregloEmpresas", ArregloEmpresas);
                    gotoPage("ListarEmpresas.jsp", request, response);
                } else {
                    System.out.println("No se pueden borrar el usuario");
                }
            } else if (request.getParameter("Modificar Perfil1").equals(
                    "Modificar Empresa")) {
                rut_empresa = request.getParameter("ArregloEmpresas");
                BeanEmpresa empresa = gestionEmpresa.DatosEmpresa(rut_empresa);

                request.setAttribute("Rut_empresa", empresa);

                if (rut_empresa != null) {
                    gotoPage("ModificarEmpresa.jsp", request, response);
                } else {
                    System.out.println("error");
                }
            } else if (request.getParameter("Modificar Empresa").equals(
                    "Modificar Perfil1")) {
                String rut_empresa = request.getParameter("Rut_empresa");
                String nombre_empresa = request.getParameter("Nombre_empresa");
                String giro_empresa = request.getParameter("Giro_empresa");
                String direccion_empresa = request.getParameter("Direccion_empresa");
                String telefono_empresa = request.getParameter("Telefono_empresa");
                String correo_empresa = request.getParameter("Correo_empresa");
                if (this.gestionEmpresa.ModificarEmpresa(rut_empresa, nombre_empresa, giro_empresa,
                        direccion_empresa, telefono_empresa, correo_empresa)) {
                    BeanEmpresa[] ArregloEmpresas;
                    ArregloEmpresas = this.gestionEmpresa.ListarEmpresas();
                    request.setAttribute("ArregloEmpresas", ArregloEmpresas);
                    gotoPage("ListarEmpresas.jsp", request, response);
                } else {
                    System.out.println("No se pueden modificar los datos de la empresa");
                }
            } else if (request.getParameter("Modificar Empresa").equals("Agregar Empresa")) {
                gotoPage("AgregarEmpresas.jsp", request, response);
            } else if (request.getParameter("Modificar Empresa").equals("Agregar")) {
                String rut_empresa = request.getParameter("Rut_empresa");
                String nombre_empresa = request.getParameter("Nombre_empresa");
                String giro_empresa = request.getParameter("Giro_empresa");
                String direccion_empresa = request.getParameter("Direccion_empresa");
                String telefono_empresa = request.getParameter("Telefono_empresa");
                String correo_empresa = request.getParameter("Correo_empresa");
                if (this.gestionEmpresa.InsertarEmpresa(rut_empresa, nombre_empresa, giro_empresa,
                    direccion_empresa, telefono_empresa, correo_empresa)) {
                    BeanEmpresa[] ArregloEmpresas;
                    ArregloEmpresas = this.gestionEmpresa.ListarEmpresas();
                    request.setAttribute("ArregloEmpresas", ArregloEmpresas);
                    gotoPage("ListarEmpresas.jsp", request, response);
                } else {
                    System.out.println(
                            "No se pudieron ingresar los datos en la base de datos");
                }
            }

              //
            if (request.getParameter("Gestionar Usuario") != null) {
                BeanUsuario[] ArregloUsuarios;
                ArregloUsuarios = this.gestionUsuario.ListarUsuarios();
                request.setAttribute("ArregloUsuarios", ArregloUsuarios);
                gotoPage("ListarUsuarios.jsp", request, response);
            } else if (request.getParameter("Borrar Usuario") != null) {
                login = request.getParameter("ArregloLOGIN");
                if (this.gestionUsuario.BorrarUsuarios(login)) {
                    BeanUsuario[] ArregloUsuarios;
                    ArregloUsuarios = this.gestionUsuario.ListarUsuarios();
                    request.setAttribute("ArregloUsuarios", ArregloUsuarios);
                    gotoPage("ListarUsuarios.jsp", request, response);
                } else {
                    System.out.println("No se pueden borrar el usuario");
                }
            } else if (request.getParameter("Modificar Usuario").equals( "Modificar Usuario")) {
                login = request.getParameter("ArregloLOGIN");
                BeanUsuario usuario = gestionUsuario.DatosUsuario(login);
                request.setAttribute("usuario", usuario);
                if (usuario != null) {
                    gotoPage("ModificarUsuario.jsp", request, response);
                } else {
                    System.out.println("error");
                }
            } else if (request.getParameter("Modificar Usuario").equals(
                    "Modificar Perfil")) {
                String nombre = request.getParameter("Nombre");
                String apellidos = request.getParameter("Apellidos");
                String pwd = request.getParameter("Password");
                String email = request.getParameter("Email");
                if (this.gestionUsuario.ModificarUsuario(nombre, apellidos, login,
                        pwd, email)) {
                    BeanUsuario[] ArregloUsuarios;
                    ArregloUsuarios = this.gestionUsuario.ListarUsuarios();
                    request.setAttribute("ArregloUsuarios", ArregloUsuarios);
                    gotoPage("ListarUsuarios.jsp", request, response);
                } else {
                    System.out.println("No se pueden modificar los datos del usuario");
                }
            } else if (request.getParameter("Modificar Usuario").equals("Agregar Usuario")) {
                gotoPage("AgregarUsuarios.jsp", request, response);
            } else if (request.getParameter("Modificar Usuario").equals("Agregar")) {
                String nombre = request.getParameter("Nombre");
                String apellidos = request.getParameter("Apellidos");
                login = request.getParameter("Login");
                String pwd = request.getParameter("Password");
                String email = request.getParameter("Email");
                String tipo = request.getParameter("Tipo");
                if (this.gestionUsuario.InsertarUsuario(nombre, apellidos, login,
                        pwd, email, tipo)) {
                    BeanUsuario[] ArregloUsuarios;
                    ArregloUsuarios = this.gestionUsuario.ListarUsuarios();
                    request.setAttribute("ArregloUsuarios", ArregloUsuarios);
                    gotoPage("ListarUsuarios.jsp", request, response);
                } else {
                    System.out.println(
                            "No se pudieron ingresar los datos en la base de datos");
                }
            }
        }

        private void gotoPage(String address, HttpServletRequest request,
                HttpServletResponse response) throws ServletException,
                IOException {
            RequestDispatcher dispatcher = request.getRequestDispatcher(address);
            dispatcher.forward(request, response);
        }
        //Clean up resources

        public void destroy() {
            this.desconectarBD();
        }

        private void conectarBD() {
            this.bc = new BeanConector();
            bc.setDriver("com.mysql.jdbc.Driver");
            bc.setLogin("root");
            bc.setPassword("root");
            bc.setUrl("jdbc:mysql://localhost/usuariosdb");
            if (bc.conectar() == 1) {

                System.out.println("Conexion en la BD exitosa");
            } else {
                System.out.println("Error en la conexion a la BD");
            }
        }

        private void desconectarBD() {
            bc.cerrarCx();
        }
    }

    
